/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ru.jSkyRoom.support;

import java.util.ArrayList;
import java.util.Arrays;
import skyproc.GRUP_TYPE;

/**
 *
 * @author Rakev
 */
public class GrupTypeBuilder {

    private ArrayList<GRUP_TYPE> grupTypes = new ArrayList<>();

    public GrupTypeBuilder() {
    }

    public GRUP_TYPE[] build() {
        return grupTypes.toArray(new GRUP_TYPE[]{});
    }

    public GrupTypeBuilder All() {
        grupTypes.addAll(Arrays.asList(GRUP_TYPE.values()));
        return this;
    }

    public GrupTypeBuilder GameSetting() {
        grupTypes.add(GRUP_TYPE.GMST);
        return this;
    }

    public GrupTypeBuilder Keyword() {
        grupTypes.add(GRUP_TYPE.KYWD);
        return this;
    }

    public GrupTypeBuilder Texture() {
        grupTypes.add(GRUP_TYPE.TXST);
        return this;
    }

    public GrupTypeBuilder GlobalForm() {
        grupTypes.add(GRUP_TYPE.GLOB);
        return this;
    }

    public GrupTypeBuilder Faction() {
        grupTypes.add(GRUP_TYPE.FACT);
        return this;
    }

    public GrupTypeBuilder HeadPart() {
        grupTypes.add(GRUP_TYPE.HDPT);
        return this;
    }

    public GrupTypeBuilder Race() {
        grupTypes.add(GRUP_TYPE.RACE);
        return this;
    }

    public GrupTypeBuilder MagicEffect() {
        grupTypes.add(GRUP_TYPE.MGEF);
        return this;
    }

    public GrupTypeBuilder Enchantment() {
        grupTypes.add(GRUP_TYPE.ENCH);
        return this;
    }

    public GrupTypeBuilder Spell() {
        grupTypes.add(GRUP_TYPE.SPEL);
        return this;
    }

    public GrupTypeBuilder Armor() {
        grupTypes.add(GRUP_TYPE.ARMO);
        return this;
    }

    public GrupTypeBuilder Book() {
        grupTypes.add(GRUP_TYPE.BOOK);
        return this;
    }

    public GrupTypeBuilder Container() {
        grupTypes.add(GRUP_TYPE.CONT);
        return this;
    }

    public GrupTypeBuilder Ingredient() {
        grupTypes.add(GRUP_TYPE.INGR);
        return this;
    }

    public GrupTypeBuilder Miscellaneous() {
        grupTypes.add(GRUP_TYPE.MISC);
        return this;
    }

    public GrupTypeBuilder Potion() {
        grupTypes.add(GRUP_TYPE.ALCH);
        return this;
    }

    public GrupTypeBuilder Reciept() {
        grupTypes.add(GRUP_TYPE.COBJ);
        return this;
    }

    public GrupTypeBuilder Projectile() {
        grupTypes.add(GRUP_TYPE.PROJ);
        return this;
    }

    public GrupTypeBuilder Stat() {
        grupTypes.add(GRUP_TYPE.STAT);
        return this;
    }

    public GrupTypeBuilder Weapon() {
        grupTypes.add(GRUP_TYPE.WEAP);
        return this;
    }

    public GrupTypeBuilder Ammo() {
        grupTypes.add(GRUP_TYPE.AMMO);
        return this;
    }

    public GrupTypeBuilder NPC() {
        grupTypes.add(GRUP_TYPE.NPC_);
        return this;
    }

    public GrupTypeBuilder LeveledCharacter() {
        grupTypes.add(GRUP_TYPE.LVLN);
        return this;
    }

    public GrupTypeBuilder LeveledItemList() {
        grupTypes.add(GRUP_TYPE.LVLI);
        return this;
    }

    public GrupTypeBuilder Weather() {
        grupTypes.add(GRUP_TYPE.WTHR);
        return this;
    }

    public GrupTypeBuilder Dialog() {
        grupTypes.add(GRUP_TYPE.DIAL);
        return this;
    }

    public GrupTypeBuilder Info() {
        grupTypes.add(GRUP_TYPE.INFO);
        return this;
    }

    public GrupTypeBuilder Quest() {
        grupTypes.add(GRUP_TYPE.QUST);
        return this;
    }

    public GrupTypeBuilder ImageSpace() {
        grupTypes.add(GRUP_TYPE.IMGS);
        return this;
    }

    public GrupTypeBuilder FormList() {
        grupTypes.add(GRUP_TYPE.FLST);
        return this;
    }

    public GrupTypeBuilder Perk() {
        grupTypes.add(GRUP_TYPE.PERK);
        return this;
    }

    public GrupTypeBuilder VoiceType() {
        grupTypes.add(GRUP_TYPE.VTYP);
        return this;
    }

    public GrupTypeBuilder ActorValue() {
        grupTypes.add(GRUP_TYPE.AVIF);
        return this;
    }

    public GrupTypeBuilder Armature() {
        grupTypes.add(GRUP_TYPE.ARMA);
        return this;
    }

    public GrupTypeBuilder EncounterZone() {
        grupTypes.add(GRUP_TYPE.ECZN);
        return this;
    }

    public GrupTypeBuilder LightTemplate() {
        grupTypes.add(GRUP_TYPE.LGTM);
        return this;
    }

    public GrupTypeBuilder DialogBranch() {
        grupTypes.add(GRUP_TYPE.DLBR);
        return this;
    }

    public GrupTypeBuilder DialogView() {
        grupTypes.add(GRUP_TYPE.DLVW);
        return this;
    }

    public GrupTypeBuilder Outfit() {
        grupTypes.add(GRUP_TYPE.OTFT);
        return this;
    }
}
